package com.aperture_software.glados_wiki.webmvc.controllers; import com.aperture_software.glados_wiki.entities.PageContent; import com.aperture_software.glados_wiki.entities.functions.TeeConsumeFunction; import com.aperture_software.glados_wiki.entities.functions.page_content.EmptyPageContentFunction; import com.aperture_software.glados_wiki.entities.functions.page_content.PageContentReadablePredicate; import com.aperture_software.glados_wiki.entities.functions.page_content.PageContentToPageContentResponseFunction; import com.aperture_software.glados_wiki.entities.page_content.PageContentResponse; import com.aperture_software.glados_wiki.entities.page_content.PageContentVersionsResponse; import com.aperture_software.glados_wiki.services.PageAclService; import com.aperture_software.glados_wiki.services.PageContentService; import com.aperture_software.glados_wiki.support.Pagination; import com.google.common.collect.Lists; import org.apache.commons.lang3.tuple.Pair; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import javax.inject.Inject; import java.util.List; /** * Created by jhyun on 14. 3. 12. */ @RequestMapping("/recents") @Controller public class RecentsController { @Inject private PageContentService pageContentService; @Inject private PageAclService pageAclService; @ResponseBody @RequestMapping(value = "/listRecents", produces = MediaType.APPLICATION_JSON_VALUE) public PageContentVersionsResponse listRecents( @RequestParam(value = "offset", defaultValue = "0", required = false) final int offset, @RequestParam(value = "limit", defaultValue = "10", required = false) final int limit) { // Pair<Long, List<PageContent>> p = pageContentService.listRecents(offset, limit); Long tot = p.getLeft(); Pagination pagination = new Pagination(tot, offset, limit); TeeConsumeFunction<PageContent, PageContentResponse> f = new TeeConsumeFunction<PageContent, PageContentResponse>( new PageContentReadablePredicate(pageAclService), new PageContentToPageContentResponseFunction(), new EmptyPageContentFunction()); List<PageContentResponse> l2 = Lists.transform(p.getRight(), f); // return new PageContentVersionsResponse(pagination, l2); } }